import sys;
import pygame;
from bullet import Bullet;
from alien import Alien;

def check_keydown_events(event,ai_settings,screen,ship,bullets):
	if event.key == pygame.K_RIGHT:
		ship.moving_right = True;
	elif event.key == pygame.K_LEFT:
		ship.moving_left = True;
	elif event.key == pygame.K_SPACE:
		fire_bullet(bullets,ai_settings,screen,ship);
	elif event.key == pygame.K_q:
		sys.exit();

def fire_bullet(bullets,ai_settings,screen,ship):
#创建一颗子弹，并将其加入到编组bullets中
	if len(bullets) < ai_settings.bullets_allowed:
		new_bullet = Bullet(ai_settings,screen,ship);
		bullets.add(new_bullet);	

def check_keyup_events(event,ship):
	if event.key == pygame.K_RIGHT:
		ship.moving_right = False;
	elif event.key == pygame.K_LEFT:
		ship.moving_left = False;
	
	

def check_events(ai_settings,screen,ship,bullets):
	"""响应按键和鼠标事件"""
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			sys.exit();
		elif event.type == pygame.KEYDOWN:
			check_keydown_events(event,ai_settings,screen,ship,bullets);
		elif event.type == pygame.KEYUP:
			check_keyup_events(event,ship);
				
def update_screen(ai_settings,screen,ship,aliens,bullets):
	'''更行屏幕上的图像，并切换到新屏幕'''
	#每次循环时都重绘屏幕
	screen.fill(ai_settings.bg_color);
	
	for bullet in bullets.sprites():
		bullet.draw_bullet();
	
	ship.blitme();
	aliens.draw(screen);
	
	#让最近绘制的屏幕可见
	pygame.display.flip();
	
def update_bullets(bullets):
		bullets.update();
		
		#删除已消失的子弹
		for bullet in bullets.copy():
			if bullet.rect.bottom <=0 :
				bullets.remove(bullet);
		#print(len(bullets));
	
def create_fleet(ai_settings,screen,aliens):
	'''创建外星人群'''
	#创建一个外星人，并计算一行可容纳多少个外星人
	#外星人间距为外星人宽度
	alien = Alien(ai_settings,screen);
	alien_width = alien.rect.width;
	
	number_aliens_x = get_number_aliens_x(ai_settings,alien_width);
	#创建第一行外星人
	for alien_num in range(number_aliens_x):
		#创建一个外星人并将其加入当前行
		create_alien(ai_settings,screen,aliens,alien_num);
		
		
def get_number_aliens_x(ai_settings,alien_width):
	'''计算每行可容纳多少个外星人'''
	avaliable_space_x = ai_settings.screen_width-2*alien_width;
	number_aliens_x = int(avaliable_space_x/(2*alien_width));
	return number_aliens_x;
	
def create_alien(ai_settings,screen,aliens,alien_number):
	alien = Alien(ai_settings,screen);
	alien.x = alien_width + 2*alien_width*alien_num;
	alien.rect.x = alien.x;
	aliens.add(alien);